package cn.liziguo;

import java.util.concurrent.ThreadLocalRandom;

/**
 * 雪花
 *
 * @author Liziguo
 * @date 2025-04-08
 */
public class Snowflake {
    /**
     * 雪花x轴坐标
     */
    private float x;
    /**
     * 雪花y轴坐标
     */
    private float y;
    /**
     * 雪花宽度
     */
    private final int w;
    /**
     * 雪花高度
     */
    private final int h;
    /**
     * 雪花x轴移动速度
     */
    private final float speedX;
    /**
     * 雪花y轴移动速度
     */
    private final float speedY;

    public Snowflake() {
        ThreadLocalRandom random = ThreadLocalRandom.current();
        // 随机大小
        w = h = random.nextInt(10, 30);
        // x轴移动速度
        speedX = (float) (random.nextDouble() * 0.7 + 0.3);
        // y轴移动速度
        speedY = (float) (random.nextDouble() * 0.4 + 0.3);

        // 雪花出现的位置只能在屏幕的上右方
        double rate = (double) (WinMain.SCREEN_WIDTH + WinMain.SCREEN_HEIGHT) / WinMain.SCREEN_WIDTH - 1;
        if (random.nextDouble() < rate) {
            // 雪花在屏幕上方
            y = -h;
            x = random.nextInt(WinMain.SCREEN_WIDTH);
        } else {
            // 雪花在屏幕右方
            x = WinMain.SCREEN_WIDTH;
            y = random.nextInt(WinMain.SCREEN_HEIGHT);
        }
    }

    public int getW() {
        return w;
    }

    public int getH() {
        return h;
    }

    public float getX() {
        return x;
    }

    public float getY() {
        return y;
    }

    public void run() {
        // 雪花的移动
        y += speedY;
        x -= speedX;
    }
}
